package com.jt.provider.service;

import com.alibaba.csp.sentinel.annotation.SentinelResource;
import org.springframework.stereotype.Service;

@Service
public class ResourceService {
    /**
     * @sentinelResource 注解描述的方法为一个切入点方法
     * 也就是说对此方法进行访问时,我们要进行一些限流操作
     * 具体的限流动作会放在切面的通知方法中
     *
     * 假如在访问这个资源方法时,出现了限流异常,我们可以自定义异常处理,
     * 具体自定义的方式,可以通过:
     * 1.blockHandlerClass 指定异常处理类
     * 2.blockHandler 指定义异常处理方法
     */

    @SentinelResource(value = "doGetResource",blockHandlerClass = ResourceBlockHandler.class,blockHandler = "doHandler")
    public String doGetResource(){

        return "doGetResource";
    }




    //blockHandler="doHandler" 与 ResourceBlockHandler类中的doHandler方法绑定,doHandler方法必须包含doGetResource方法
    //的参数,还有一个异常处理参数
    //@SentinelResource AOP的切入点方法
    @SentinelResource(value = "Resource",blockHandlerClass = ResourceBlockHandler.class,blockHandler = "doHandler")
    public String doGetResource(Integer id){
        return "Get Resource by " + id;
    }
}
